# -*- coding: utf-8 -*-
"""
Created on Sat Aug 12 23:10:15 2023

@author: skunk69
"""

import json

chinese_name = u'贝克抑郁自评量表'
english_name = 'Beck Depression Inventory'
abbreviation = 'BDI'
category = u'精神病学临床量表'

outline = u"""《贝克抑郁自评量表》，又名《贝克抑郁自评问卷》(Beck Depression Inventory, BDI)，由美国著名心理学家Beck A. T. 编制于20世纪60年代，后被广泛应用于临床流行病学调査。BDI早年的版本为21项，其项目内容源自临床。后来发现，有些抑郁症患者，特别是严重抑郁者,不能很好完成21项评定。Beck于1974年推出了13项版本，新版本品质良好。"""

instruction = u"""以下是一个问卷，由13道题组成，每一道题均有4句短句，代表4个可能的答案。请您仔细阅读每一道题的所有回答(0〜3)。读完后，从中选出一个最能反映你今天即此刻情况的句子。"""

with open('BDI.txt','r',encoding='utf-8') as f:
    lines = f.readlines()
    f.close()

items = {}
rating = []
for i in range(0,len(lines),5):
    key = i//5+1
    line = lines[i].strip().split('、')
    items[key] = line[-1]
    
    rating_lines = [line.split('.')[-1] for line in lines[i+1:i+5]]
    rating.append({key:line.strip() for key,line in enumerate(rating_lines)})

reverse_items = []
scales = []
scales_items = []
factors = []
factors_scales = []
score_rules = list(range(0,4))

contents = {
    'instruction':instruction,
    'items':items,
    'reverse_items':reverse_items,
    'scales':scales,
    'scales_items':scales_items,
    'factors':factors,
    'factors_scales':factors_scales,
    'rating':rating,
    'score_rules':score_rules       
    }

implementation = u"""《贝克抑郁自评量表》属于一个自评量表。"""

reliability = u"""Beck本人报道，本量表在美国人群中具有较好的信度和效度。1999年杜召云对1734名大学生进行的研究表明，该问卷在国内大学生人群中重测信度较好(126人间隔1周，条目和总分的相关在0.48〜0.92)，测评结果稳定。"""
validity = u"""有人比较了包括Hamilton抑郁量表和SCL-90在内的6种评定抑郁的工具，认为在药瘾患者中检出抑郁症状，以BDI-13最为敏感。
国内郑洪波等报道，BDI-21具良好的结构效度，与HAMD的总分及相应单项分显著相关。328例现患抑郁性障碍患者，BDI-21的总分为29.7±10.9，BDI-13的总分为17.1士4.9。
BDI-13和BDI-21的相关系数高达0.96，和临床医师评定结果相关系数为0.61。"""
measurements = {'reliability':reliability,'validity':validity}

interpretation = u"""BDI只有单项分和总分两项统计指标。Beck提出，可以用总分来区分抑郁症状的有无及其严重程度：小于4分(基本上)无抑郁症状，5〜7分轻度，8〜15分中度，16分以上严重。"""

applications = u"""近年国外一些大型的心血管疾病研究中常常使用BDI评定抑郁症状。
Leticia M Furhmetto等人在2005年对该量表作为筛选和诊断中到重度的抑郁症的工具进行了研究，证实了该量表具有较高的灵敏度和阳性預测值。"""

this_scale = {
    'chinese_name':chinese_name,
    'english_name':english_name,
    'abbreviation':abbreviation,
    'category':category,
    'outline':outline,
    'contents':contents,
    'implementation':implementation,
    'measurements':measurements,
    'interpretation':interpretation,
    'applications':applications    
    }

with open(abbreviation+'.json','w+',encoding='utf-8') as f:
    json.dump(this_scale,f,indent=2,ensure_ascii=False)